//
// Created by laichao on 2021/1/2.
// ========= 周 赛 题 =========
//

#ifndef THEROADTOADVANCEMENT_WEEKSOLUTIONS_H
#define THEROADTOADVANCEMENT_WEEKSOLUTIONS_H

#include <string>
#include <vector>
#include <queue>

using namespace std;

///// ================================== CLASS Declaration ==================================
class WeekSolutions {
public:
    //=================================== No.51 - 双周赛 ===================================
    static string replaceDigits(string s);      // 5730. 将所有数字用字符替换
    static int maximumElementAfterDecrementingAndRearranging(vector<int> &arr);     // 5732. 减小和重新排列数组后的最大元素
    static vector<int> closestRoom(vector<vector<int>> &rooms, vector<vector<int>> &queries);       // 5733. 最近的房间

    //=================================== No.239 - 周赛 ===================================
    static int getMinDistance(vector<int> &nums, int target, int start);            // 1848. 到目标元素的最小距离
    static bool splitString(string s);          // 1849. 将字符串拆分为递减的连续值
    static int getMinSwaps(string num, int k);  // 1850. 邻位交换的最小次数

    //=================================== No.241 - 周赛 ===================================
    static int subsetXORSum(vector<int> &nums);     // 5759. 找出所有子集的异或总和再求和
    static int minSwaps(string s);              // 5760. 构成交替字符串需要的最小交换次数

    //=================================== No.242 - 周赛 ===================================
    static bool checkZeroOnes(string s);        // 1869. 哪种连续子字符串更长
    static int minSpeedOnTime(vector<int> &dist, double hour);          // 1870. 准时到达的列车最小时速

    //=================================== No.53 - 双周赛 ===================================
    static int countGoodSubstrings(string s);   // 5754. 长度为三且各字符不同的子字符串
    static int minPairSum(vector<int> &nums);   // 5755. 数组中最大数对和的最小值
    static vector<int> getBiggestThree(vector<vector<int>> &grid);      // 1878. 矩阵中最大的三个菱形和
    static int minimumXORSum(vector<int> &nums1, vector<int> &nums2);   // 5756. 两个数组最小的异或值之和

    //=================================== No.243 - 周赛 ===================================
    static bool isSumEqual(string firstWord, string secondWord, string targetWord);     // 1880. 检查某单词是否等于两单词之和
    static string maxValue(string n, int x);        // 1881. 插入后的最大值
    static vector<int> assignTasks(vector<int> &servers, vector<int> &tasks);       // 1882. 使用服务器处理任务
    static int minSkips(vector<int> &dist, int speed, int hoursBefore);             // 1883. 准时抵达会议现场的最小跳过休息次数

    //=================================== No.244 - 周赛 ===================================
    static bool findRotation(vector<vector<int>> &mat, vector<vector<int>> &target);    // 5776. 判断矩阵经轮转后是否一致
    static int reductionOperations(vector<int> &nums);          // 1887. 使数组元素相等的减少操作次数
    static int minFlips(string s);          // 1888. 使二进制字符串字符交替的最少反转次数

    //=================================== No.246 - 周赛 ===================================
    static string largestOddNumber(string num);         // 1903. 字符串中的最大奇数
    static int numberOfRounds(string startTime, string finishTime);         // 1904. 你完成的完整对局数
    static int countSubIslands(vector<vector<int>> &grid1, vector<vector<int>> &grid2);     // 1905. 统计子岛屿

    //=================================== No.248 - 周赛 ===================================
    static vector<int> buildArray(vector<int> &nums);       // 1920. 基于排列构建数组

    //=================================== No.58 - 双周赛 ===================================
    static string makeFancyString(string s);            // 1957. 删除字符使字符串变好
};

// No.51 - 双周赛
// 5731. 座位预约管理系统
class SeatManager;

#endif //THEROADTOADVANCEMENT_WEEKSOLUTIONS_H
